package com.example.myspringboot.service.peiz;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.example.myspringboot.anno.Loggable;
import com.example.myspringboot.domain.PubConfigTable;
import com.example.myspringboot.mapper.PubConfigTableMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * @author cy
 * @date 2024/5/23
 */
@Service
@Slf4j
@RequiredArgsConstructor
public class PeiZhiSerivceImpl implements PeiZhiSerivce {

    private final PubConfigTableMapper pubConfigTableMapper;

    /**
     * 查询配置信息的函数
     *
     * @param str 接收到的请求字符串，包含需要查询的配置信息的请求参数
     * @return 返回一个包含查询结果的JSON字符串
     */
    @Override
    @Loggable
    public String getPeiZhiInfo(String str) {
        // 解析传入的字符串为JSONObject对象
        JSONObject req = JSONUtil.parseObj(str);
        // 从req对象中获取真正的请求参数JSONObject
        JSONObject info = req.getJSONObject("req");

        // 创建一个空的JSONObject对象用于构建响应
        JSONObject res = JSONUtil.createObj();

        PageHelper.startPage(info.getInt("page"), info.getInt("pageSize"));
        List<Map<String, String>> tables = pubConfigTableMapper.selectAllBySysId(info.getStr("sysId"));

        PageInfo<Map<String, String>> pageInfo = new PageInfo<>(tables);

        // 设置响应代码为200，表示成功
        res.putByPath("code", 200);
        res.putByPath("total", pageInfo.getTotal());
        res.putByPath("data", pageInfo.getList());

        // 将响应对象转换为字符串并返回
        return res.toString();
    }

}
